package com.swak.consistency.tcc.role;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * 事务角色: 只需要有发起者 和 提供者
 * 
 * @author DELL
 */
@RequiredArgsConstructor
@Getter
public enum Role {

	/**
	 * 分布式事务事务的发起的调用
	 */
	INITIATOR(1, "事务发起者"),

	/**
	 * 分布式事参与方
	 */
	CONSUMER(2, "事务消费者"),

	/**
	 * 分布式事务rpc调用的实现方
	 */
	PROVIDER(3, "事务提供者"),

	/**
	 * 分布式事务重试-只处理
	 */
	RETRYER(4, "事务重试");

	private final int code;
	private final String desc;

	public static Role valueOf(int code) {
		Role[] phases = Role.values();
		for (Role phase : phases) {
			if (phase.getCode() == code) {
				return phase;
			}
		}
		return null;
	}
}
